package com.rabbit.constants;

/**
 * RabbitMq常量类
 * @author James
 */
public interface RabbitConstant {

    /**
     * 交换机相关名称
     */
    interface Exchange {
        /**
         * 延时-订阅（导出）服务重试
         */
        String DELAYED_EXCHANGE_NAME = "delay.exchange";
        /**
         * 导出文件相关交换机
         */
        String FILE_EXCHANGE_NAME = "file.exchange";
        /**
         * message交换机
         */
        String MESSAGE_EXCHANGE = "message-exchange";
        /**
         * 死信交换机
         */
        String DEAD_EXCHANGE = "dead-exchange";
    }

    /**
     * 交换机相关类型
     */
    interface ExchangeType {
        /**
         * 直连交换机类型
         */
        String EXCHANGE_TYPE_DIRECT = "direct";
        /**
         * 订阅交换机类型
         */
        String EXCHANGE_TYPE_TOPIC = "topic";
        /**
         * 扇形交换机类型
         */
        String EXCHANGE_TYPE_FANOUT = "fanout";
        /**
         * 头部交换机类型
         */
        String EXCHANGE_TYPE_HEADER = "header";
        /**
         * 延迟交换机类型
         */
        String EXCHANGE_TYPE_DELAYED = "delayed";
    }

    /**
     * Routing-Key相关名称
     */
    interface Routing {
        /**
         * 延时路由
         */
        String DELAYED_ROUTING_KEY = "delay.routingKey";
        /**
         * tms运单自动签收延时路由
         */
        String DELAYED_TMS_AUTO_SIGN = "delay.tms.autoSign";
        /**
         * 导出文件相关路由
         */
        String FILE_ROUTING_KEY = "file.routingKey";
        /**
         * 消息通知相关路由
         */
        String MESSAGE_ROUTING_EVENT = "event.message.#";
        /**
         * message生产方绑定的routing-key
         */
        String MESSAGE_ROUTING_ALI_SIGN = "message.#";
    }

    /**
     * 普通队列相关名称
     */
    interface Queue {
        /**
         * 延时-订阅（导出）服务重试
         */
        String DELAY_SUBSCRIBE_SERVICE_RETRY = "delay.subscribe.service.retry";
        /**
         * tms运单自动签收延时队列
         */
        String DELAY_TMS_AUTO_SIGN = "delay-tms-autoSign";
        /**
         * 导出文件相关队列
         */
        String FILE_EXPORT = "file.export";
        /**
         * 短信
         */
        String MESSAGE_QUEUE_SMS = "message-sms";
        /**
         * 事件通知
         */
        String MESSAGE_QUEUE_EVENT = "message-event";
        /**
         * 发送单条消息
         */
        String SEND_SIGN_MESSAGE = "sendSignMessage";
        /**
         * 发送事件通知
         */
        String SEND_EVENT_NOTIFY = "sendEventNotify";
        /**
         * message队列：阿里云
         */
        String MESSAGE_QUEUE_ALI_SIGN = "message-ali-sign";
    }

    /**
     * 死信队列相关名称
     */
    interface DeadQueue {
        /**
         * 短信
         */
        String DEAD_MESSAGE_QUEUE_SMS = "dead-message-sms";
        /**
         * 事件通知
         */
        String DEAD_MESSAGE_QUEUE_EVENT = "dead-message-event";
        /**
         * 死信消息队列（阿里云短信接口）
         */
        String DEAD_MESSAGE_QUEUE_ALI = "dead-message-ali";
        /**
         * 文件导出
         */
        String DEAD_FILE_EXPORT = "dead.file.export";
    }

    interface Other {
        /**
         * 超时时间，单位：ms
         */
        String MESSAGE_TTL = "3000";
        /**
         * 声明忽略异常
         */
        String IGNORE_DECLARATION_EXCEPTIONS = "true";
        /**
         * 发送成功
         */
        Integer CONSUMER_SUCCESS = 1;
        /**
         * 生产者发送失败
         */
        Integer PRODUCT_SEND_FAILURE = 2;
        /**
         * 消费者消费失败
         */
        Integer CONSUMER_FAILURE = 3;
    }
}
